package com.hjm.project.job.task.service;

import java.util.List;
import java.util.concurrent.CompletableFuture;


import com.hjm.common.utils.poi.ExcelUtil;
import com.hjm.project.job.task.domain.JobTask;
import org.springframework.web.multipart.MultipartFile;


/**
 * 文件下载队列Service接口
 * 
 * @author maker-platform
 * @date 2021-01-16
 */
public interface IJobTaskService 
{
    /**
     * 查询文件下载队列
     * 
     * @param id 文件下载队列ID
     * @return 文件下载队列
     */
    public JobTask selectJobTaskById(Long id);

    /**
     * 查询文件下载队列列表
     * 
     * @param jobTask 文件下载队列
     * @return 文件下载队列集合
     */
    public List<JobTask> selectJobTaskList(JobTask jobTask);

    /**
     * 查询文件下载队列列表数据管理
     *
     * @param jobTask 文件下载队列
     * @return 文件下载队列集合
     */
    public List<JobTask> selectJobTaskListOfData(JobTask jobTask);

    /**
     * 获取所有selectAllJobTaskList
     * @Param [jobTask]
     * @Return java.util.List<com.hjm.project.job.task.domain.JobTask>
     */
    public List<JobTask> selectAllJobTaskList(JobTask jobTask);

    /**
     * 新增文件下载队列
     * 
     * @param jobTask 文件下载队列
     * @return 结果
     */
    public int insertJobTask(JobTask jobTask);

    /**
     * 修改文件下载队列
     * 
     * @param jobTask 文件下载队列
     * @return 结果
     */
    public int updateJobTask(JobTask jobTask);

    /**
     * 批量删除文件下载队列
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteJobTaskByIds(String ids);

    /**
     * 删除文件下载队列信息
     * 
     * @param id 文件下载队列ID
     * @return 结果
     */
    public int deleteJobTaskById(Long id);

    public void asyncDownLoad(String sheetName,Long operatorType,String operatorContent,String createBy, List list, ExcelUtil util);


    /**
     *
     * @Param [operatorType     操作类型
     *         operatorContent  文件说明
     *         createBy         操作人
     *         file             要上传的文件
     * @Return void
     */
    public void asyncUploadFile(String operatorType,String operatorContent,String createBy, MultipartFile file);


    /**
     * 通过线程执行的结果写入文件
     * @Param [operatorType, operatorContent, createBy, file]
     * @Return void
     */
    public void asyncUploadFileFuture(CompletableFuture<JobTask> cbf) throws Exception;

}
